package cn.tedu.inner;
//测试  匿名内部类----匿名对象+局部内部类
//好处：优化程序的继承结构
public class Test1 {
    public static void main(String[] args) {
//        new B().eat();//匿名对象--没名字---一次只能执行一个任务--
//匿名内部类------直接创建接口的对象，并在匿名内部类里重写抽象方法。
        new A(){//重写接口里的方法
            @Override
            public void eat() {
                System.out.println("吃最好的");
            }

            @Override
            public void sleep() {
                System.out.println("睡到自然醒");
            }
        }.sleep();//调用指定的方法
        A a = new A() {
            @Override
            public void eat() {
                System.out.println("吃最好的");
            }

            @Override
            public void sleep() {
                System.out.println("睡到自然醒");
            }
        };//注意此处一定要加分号---";"
        a.eat();
        a.sleep();
        //TODO 3 直接创建抽象类方法-- 需要重写抽象方法--至于普通方法想改才重写
        new C() {
            @Override
            public void sleep() {
                System.out.println("能睡就行");
            }
        }.eat();
        C c = new C(){
            @Override
            public void sleep(){
                System.out.println("能睡就行");
            }
        };
        c.eat();
        c.sleep();
    }
}
//定义接口
//使用接口
interface A{
    void eat();//public abstract void()
    void sleep();
}
class B implements A{
    public void eat(){
        System.out.println("吃");
    }
    public void sleep(){
        System.out.println("睡");
    }
}
abstract class C implements A{
    @Override
    public void eat() {
        System.out.println("吃啥都行");
    }
}
